<?php 
/**
 * 
 * 缩略图 和 水印
 * 
 * 
 */
namespace Hdphp\Tool;
class Thumb{

	//缩略图
	/**
	 * @param $width  缩略图宽
	 * @param $height 缩略图高
	 * @param $srcImg 缩略图图像地址 
	 */
	public function thumb($width,$height,$Img){
		//文件类型
		$type=array('jpeg','jpg','png','gif');
		$name=basename($Img);
		$name= substr( $name,0,strrpos($name, '.') );

		//后缀
		$suffix=ltrim(strrchr($Img,'.'),'.');

		if(!in_array($suffix, $type)) return false;

		switch ($suffix) {
			case 'jpeg':
				// header("Content-type:image/jpeg");
				$srcImg=imagecreatefromjpeg($Img);
				break;
			case 'jpg':
				// header("Content-type:image/jpeg");
				$srcImg=imagecreatefromjpeg($Img);
				break;
			case 'png':
				// header("Content-type:image/png");
				$srcImg=imagecreatefrompng($Img);
				break;
			case 'gif':
				// header("Content-type:image/gif");
				$srcImg=imagecreatefromgif($Img);
				break;											
		}

		$srcW=imagesx($srcImg);
		$srcH=imagesy($srcImg);
		//比率
		$rate=$srcW/$width > $srcH/$height ? $srcW/$width : $srcH/$height;
		//源图
		$destW=$srcW/$rate;
		$destH=$srcH/$rate;
		$destImg=imagecreatetruecolor($destW, $destH);

		imagecopyresized($destImg, $srcImg, 0, 0, 0, 0, $destW, $destH, $srcW, $srcH);

		switch ($suffix) {
			case 'jpeg':
				imagejpeg($destImg,dirname($Img).'/'.$name.'_thumb.'.$suffix);
				break;
			case 'jpg':
				imagejpeg($destImg,dirname($Img).'/'.$name.'_thumb.'.$suffix);
				break;
			case 'png':
				imagepng($destImg,dirname($Img).'/'.$name.'_thumb.'.$suffix);
				break;
			case 'gif':
				imagegif($destImg,dirname($Img).'/'.$name.'_thumb.'.$suffix);
				break;											
		}
		imagedestroy($destImg);
		//返回文件名
		return dirname($Img).'/'.$name.'_thumb.'.$suffix;
	}

	//水印
	/**
	 * @param $destImg  源图
	 * @param $waterImg 水印图
	 * @param $pos      水印显示的位置
	 */
	public function water($Img,$waterImg,$pos=3){

		$name=basename($Img);
		$name=substr($name,0,strrpos($name, '.'));

		$type=array('jpeg','jpg','png','gif');
		$subffix=ltrim(strrchr($Img, '.'),'.');
		if(!in_array($subffix, $type)) return false;

		switch ($subffix) {
			case 'jpeg':
				$destImg=imagecreatefromjpeg($Img);
				break;
			case 'jpeg':
				$destImg=imagecreatefromjpeg($Img);
				break;
			case 'jpeg':
				$destImg=imagecreatefrompng($Img);
				break;
			case 'jpeg':
				$destImg=imagecreatefromgif($Img);
				break;			
		}

		$destW=imagesx($destImg);
		$destH=imagesy($destImg);

		$waterImg=imagecreatefrompng($waterImg);
		$waterW=imagesx($waterImg);
		$waterH=imagesy($waterImg);

		//位置
		switch ($pos) {
			case 1:
				$destX=30;
				$desty=30;
				break;
			case 2:
				$destX=$destW-$waterW-30;
				$desty=30;
				break;
			case 3:
				$destX=$destW-$waterW-30;
				$desty=$destH-$waterH-30;
				break;
			case 4:
				$destX=30;
				$desty=$destH-$waterH-30;
				break;
			case 5:
				$destX=$destW/2-$waterW/2;
				$desty=$destH/2-$waterH/2;
				break;			
		}
		// imagecopy(dst_im, src_im, dst_x, dst_y, src_x, src_y, src_w, src_h)
		imagecopymerge($destImg, $waterImg, $destX, $desty, 0, 0, $srcW, $srcH, pct);

		switch ($subffix) {
			case 'jpeg':
				imagejpeg($destImg,dirname($Img).'/'.name.'_water.'.$subffix);
				break;
			case 'jpeg':
				imagejpeg($destImg,dirname($Img).'/'.name.'_water.'.$subffix);
				break;
			case 'jpeg':
				imagepng($destImg,dirname($Img).'/'.name.'_water.'.$subffix);
				break;
			case 'jpeg':
				imagegif($destImg,dirname($Img).'/'.name.'_water.'.$subffix);
				break;			
		}

		imagedestroy($destImg);
	}

}

// $image=new Image;
// $image->thumb(300,200,'./4.jpg');

// $image->water($destImg,$waterImg);


 ?>